"""
所有任务执行的抽象基类，包含了任务的基本属性和方法
"""
import random
from abc import ABCMeta, abstractmethod


class BaseTask(object):
    __meta_class__ = ABCMeta

    # 定义输出语句列表
    __print_list = []

    def __int__(self):
        self.__print_list = []

    '''
    重写打印方法，目的是为了最后的输出
    '''

    def print_(self, *args, sep=' ', end='\n', **kwargs):
        output = ""
        # 构建输出字符串
        for index, arg in enumerate(args):
            if index == len(args) - 1:
                output += str(arg)
                continue
            output += str(arg) + sep
        output = output + end
        self.__print_list.append(output)
        # 调用内置的 print 函数打印字符串
        print(*args, sep=sep, end=end, **kwargs)

    '''
    执行任务 
    '''

    @abstractmethod
    def do_task(self):
        pass

    '''
    执行任务
    :return 打印语句
    '''

    def run(self):
        try:
            self.__print_list = []
            self.do_task()
        except Exception as e:
            self.print_(f'执行过程中发生[{e}]错误')

        return self.__print_list
